Skip to main content

Cinemática personalizada

Ver el PLCopenSingle2.project proyecto de muestra y el CustomKinematics.library biblioteca en el directorio de instalación de CODESYS por debajo ..\CODESYS SoftMotion\Examples.

Este ejemplo describe cómo crear una biblioteca con una transformación cinemática personalizada (Gantry3C) y cómo usar esta biblioteca en un proyecto para controlar el robot.

La transformación cinemática 'Gantry3C' consta de 3 ejes lineales (X, Y y Z) que llevan un cabezal de herramienta. El cabezal de la herramienta consta de un eje adicional que lleva una herramienta montada. El cabezal de la herramienta se puede girar alrededor del eje Z.

_sm_img_custom_kinematik.png

1. Crea un nuevo proyecto de biblioteca.

Cree un nuevo proyecto con el Biblioteca vacía plantilla.

_sm_img_create_empty_project.png

2. Agregue un administrador de biblioteca.

Agregar un administrador de biblioteca al POU vista. Añade el SM3_Transformation, SM3_Math, y SM3_Error bibliotecas al administrador de bibliotecas.

3. Cree el bloque de funciones Gantry3C.

Este bloque de funciones implementa las interfaces MC_KIN_REF_SM3 y ISMKinematicsWithInfo2 de la biblioteca SM3_Transformation. Puede definir un desplazamiento como entrada para cada eje. Este desplazamiento se resta antes de la transformación hacia adelante y se suma después de la transformación inversa.

_sm_img_fb_gantry3c.png

Ejemplo de Gantry3C con dos cinemáticas desacopladas y KinCoupled:

FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics
FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics

FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled

Proporcionar los bloques de funciones Custom_Kin_Gantry3 y Custom_Kin_CAxis como entradas para el bloque de funciones Kin_Coupled durante la inicialización. Ahora Custom_Kin_Gantry3C se convierte en una cinemática acoplada que combina la cinemática de posición y orientación.

4. Implementar los métodos de la interfaz MC_KIN_REF_SM3 y la propiedad NumAxes4.

AxesToCartesian: Cinemática hacia adelante: Cálculo de la posición y orientación a partir de los valores del eje.

CartesianToAxes: Cinemática inversa: Cálculo de los valores de los ejes a partir de la posición y la orientación.

NumAxes: Número de ejes de la cinemática

_sm_img_cartesian_to_axes.png
_sm_img_axes_to_cartesian.png
_sm_img_gantry3c_methods.png

5. Implementar los métodos de las interfaces ISMKinematicsWithInfo2 e ISMKinematicsWithInfo.

GetAxisProperties: Propiedades, como el tipo de eje. Se pueden definir los límites para cada eje.

GetKinematicsName: Nombre de la cinemática

IsSingularity: Puede ignorarse para esta cinemática.

_sm_img_get_axis_properties.png
_sm_img_get_kinematics_name.png

6. Especifique la información del proyecto.

_sm_img_project_information.png

7. Consulte la biblioteca para ver si hay errores del compilador.

Para consultar la biblioteca, haga clic ConstruirVerifique todos los objetos de la piscina.

8. Cree la descripción en el configurador de grupos de ejes.

Cuando la POU tiene el atributo sm_kin_libdoc, el comentario especificado en el bloque de funciones se utiliza en el configurador de grupos de ejes como descripción de la cinemática. Para ello, se utiliza formato de texto reestructurado.

_sm_img_restructured_text.png
_sm_img_axis_group_description.png
_sm_img_axis_group_configurator.png
procedimiento. Para generar la descripción de la cinemática a partir de los comentarios del bloque de función en el editor de grupos de ejes, siga estos pasos:
  1. Incluir el atributo sm_kin_libdoc como se muestra en la imagen de arriba.

  2. Incluya las propiedades requeridas del proyecto DocFormat y DocLanguages (en el cuadro de diálogo de información del proyecto) relacionado con la documentación de la biblioteca.

    Resultado:

    _sm_img_project_information_libdoc.png
  3. Asegúrese de que el directorio de instalación de CODESYS contiene la libdoc.exe archivo ejecutable (directorio: ...\DocScripting\3.5.xx.0\).

  4. Descargue el convertidor wkhtmltox de 32 bits con la versión 0.12.5 o inferior de https://wkhtmltopdf.org/downloads.html. Extrae el wkhtmltox.dll archivar y copiar a ...\DocScripting\3.5.xx.0\\bin en el CODESYS directorio de instalación.

    Importante

    Ya que wkhtmltox.dll ya no admite imágenes de forma predeterminada en la versión 0.12.6 y superior, debe utilizar la versión 0.12.5 o inferior.

  5. Crea la variable del sistema LIBDOC_CODESYS en Windows. Establezca el valor en la ruta del archivo de CODESYS.exe. Asegúrese de especificar el nombre de la ruta y el nombre del perfil entre comillas dobles.

    Resultado:

    _sm_img_libdoc_path.png
  6. Guarde, cierre y vuelva a abrir el proyecto de biblioteca.

  7. Hacer clic Archivo → Guardar proyecto como biblioteca compilada.

    La biblioteca compilada se instalará en el proyecto que utiliza esta cinemática.

Usar la biblioteca en un proyecto (CustomKinematics_Implementation.project)

El proyecto demuestra cómo usar y controlar la cinemática creada en la sección anterior haciendo jogging o al mando de un movimiento.

  1. Crear un CODESYS proyecto estándar con el CODESYS SoftMotion Win controlador.

  2. Abra el Administrador de bibliotecas e instale la biblioteca CustomKinematics.compiled-library (creado en la sección anterior) que contiene la cinemática Gantry3C. Agregue la biblioteca al Administrador de bibliotecas.

  3. Agregue un objeto de grupo de ejes y seleccione el KinCustom.Gantry3C cinemática.

    Resultado:

    _sm_img_select_kinematics.png
  4. Agregue 4 ejes virtuales al Piscina SoftMotion General Axis grupo de ejes en el árbol de dispositivos. (DriveX, Y, Z y C)

  5. Abra el configurador de grupos de ejes. En el Asignación a ejes sección, mapee los ejes a sus respectivos campos.

    Resultado:

    _sm_img_axis_mapping.png
  6. El programa Prg_Visu es el programa principal que controla el grupo de ejes. Cuando se inicia la aplicación, Prg_Visu enciende el grupo de ejes y lo habilita. Además, llama a todos los bloques de función necesarios para controlar el grupo de ejes (jogging, lineales y movimientos PTP). Todos estos movimientos se pueden controlar desde la visualización adjunta.

    Resultado:

    _sm_img_prg_visu.png
  7. Bloque de funciones: Jog: Este FB combina jogging en el espacio de ejes y en el espacio cartesiano. Utiliza dos instancias de SMC_GroupJog2. Uno es para el espacio de ejes y el otro es para el espacio cartesiano. Este bloque de funciones se puede utilizar con las plantillas de visualización. V_RobotPosition_ejes y V_RobotPosition_cart_Jog para activar cualquier cinemática en el espacio cartesiano y de ejes.

    Resultado:

    _sm_img_fb_jog.png
    _sm_img_fb_jog2.png
  8. FB SMC_TRAFOF_Gantry3C: Este bloque de funciones transforma los valores del eje de entrada de una cinemática Gantry3C en sus respectivos valores de TCP. Además, los valores de los ejes se normalizan para que se puedan utilizar con la plantilla de visualización. TRAFOF_Gantry3C_YZ visualizar los movimientos de la cinemática.

    Resultado:

    _sm_img_trafof_gantry3c.png
  9. Compila y ejecuta la aplicación. Abra la visualización. Puede mover el robot en el espacio del eje así como en el espacio cartesiano. También hay plantillas de visualización para controlar un movimiento lineal o PTP.

    Resultado:

    _sm_img_custom_kinematics_visu.png

Sugerencia

El ejemplo que se describe aquí analiza los ejes de posicionamiento y orientación en un bloque de función común. Muchas cinemáticas pueden comprender dos cinemáticas parciales desacopladas: una cinemática de posicionamiento (delta, pórtico, etc.) y una cinemática de orientación (herramientas como el eje C, Wrist2, Wrist3, etc.). Ambas cinemáticas están conectadas entre sí en el "punto de brida", el TCP de la cinemática de posicionamiento. La cinemática de orientación se caracteriza por el hecho de que es capaz de calcular el vector desde el punto de brida hasta el TCP de la cinemática acoplada. El cálculo se realiza utilizando solo la orientación de este TCP (lo que significa que es independiente de la cinemática de posicionamiento o independiente de la orientación del punto de brida). La cinemática de posicionamiento, a su vez, debe poder determinar las posiciones de sus ejes únicamente a partir de la posición del punto de brida. No debe depender de la orientación del punto de la brida.

En este caso, puede recurrir a interfaces como ISMPositionKinematics o ISMOrientationKinematics. Para implementar estas interfaces, defina un bloque de funciones para implementar ISMPositionKinematics y otro bloque de funciones para implementar ISMOrientationKinematics. Finalmente, defina un bloque de funciones que extienda el bloque de funciones. Kin_Coupled (de SM3_Transformation) con los bloques de funciones previamente definidos como entradas.

Para más información, ver: Creación de cinemáticas personalizadas